class Solution {
    public boolean canPartition(int[] nums) {
          int sum = 0  ;
          for(int x : nums) sum += x ;
           if(sum%2!=0)return false ;
          sum = sum/2 ;
          int len = nums.length ;
         boolean[] dp = new boolean[sum+1] ; 
         dp[0] = true ;
         for(int i=1 ; i<= len ; i ++){
            for(int j=sum ; j>=1; j--){
               dp[j] = dp[j] || (j-nums[i-1]>=0 && dp[j-nums[i-1]]) ;
            }
         }
         return dp[sum] ; 
    }
}